home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / LIBRARY / PAS_0693 / TCTACTOE.PAS < prev    next >
Pascal/Delphi Source File  |  1993-06-30  |  5KB  |  120 lines

  1. {─ Fido Pascal Conference ────────────────────────────────────────────── PASCAL ─
  2. Msg  : 329 of 374
  3. From : Mario Polycarpou                    3:690/254.0          28 May 93  20:19
  4. To   : Zaimi Zaidin
  5. Subj : SMART TIC TAC TOE
  6. ────────────────────────────────────────────────────────────────────────────────
  7.  
  8.  By coincidence, I wrote a "tic tac toe" program only two days ago
  9.  for someone who had this to do for an assignment. There's one last
  10.  bug in the program which makes it announce a winner incorrectly.
  11.  You may need to spend an hour or two finding it as I beleive it
  12.  is an array coordinate mixup that is causing the problem....BTW...no
  13.  frills...its an assignment for a college kid..}
  14. PROGRAM Assign;
  15. USES Crt;
  16. TYPE TicTacToe = Array[1..3,1..3] of Char;
  17. VAR  TTT:TicTacToe;  Col,Row:Byte;  Win:Boolean;
  18. {-------------------------------------------------}
  19. PROCEDURE Display;
  20. BEGIN
  21.  Textattr:=$0F;
  22.  Gotoxy(25,2);   Write ('TIC-TAC-TOE     By George Mammen       ');
  23.  Gotoxy(17,3);   Write ('       ══════════════════════════════════      ');
  24.  Gotoxy(17,4);   Write ('                                               ');
  25.  Gotoxy(17,5);   Write ('╔═════════════════════════════════════════════╗');
  26.  Gotoxy(17,6);   Write ('║                                             ║');
  27.  Gotoxy(17,7);   Write ('║                │          │                 ║');
  28.  Gotoxy(17,8);   Write ('║                │          │                 ║');
  29.  Gotoxy(17,9);   Write ('║                │          │                 ║');
  30.  Gotoxy(17,10);  Write ('║        (1,1)   │   (2,1)  │   (3,1)         ║');
  31.  Gotoxy(17,11);  Write ('║     ───────────┼──────────┼───────────      ║');
  32.  Gotoxy(17,12);  Write ('║                │          │                 ║');
  33.  Gotoxy(17,13);  Write ('║                │          │                 ║');
  34.  Gotoxy(17,14);  Write ('║        (1,2)   │   (2,2)  │   (3,2)         ║');
  35.  Gotoxy(17,15);  Write ('║     ───────────┼──────────┼───────────      ║');
  36.  Gotoxy(17,16);  Write ('║                │          │                 ║');
  37.  Gotoxy(17,17);  Write ('║                │          │                 ║');
  38.  Gotoxy(17,18);  Write ('║                │          │                 ║');
  39.  Gotoxy(17,19);  Write ('║        (1,3)   │   (2,3)  │   (3,3)         ║');
  40.  Gotoxy(17,20);  Write ('║                                             ║');
  41.  Gotoxy(17,21);  Write ('╚═════════════════════════════════════════════╝');
  42. END;  {Display}
  43. {--------------------------}
  44. PROCEDURE ClearArray;
  45. BEGIN
  46.  FOR Col:=1 TO 3 DO
  47.   FOR Row:=1 TO 3 DO TTT[Col,Row]:=' ';
  48. END;
  49. {---------------------------------}
  50. PROCEDURE ShowChars;
  51. BEGIN
  52.   CASE Col OF
  53.    1: CASE Row OF
  54.         1: Gotoxy(28,8);
  55.         2: Gotoxy(28,12);
  56.         3: Gotoxy(28,17);
  57.       END;
  58.    2: CASE Row OF
  59.         1: Gotoxy(40,8);
  60.         2: Gotoxy(40,12);
  61.         3: Gotoxy(40,17);
  62.       END;
  63.    3: CASE Row OF
  64.         1: Gotoxy(51,8);
  65.         2: Gotoxy(51,12);
  66.         3: Gotoxy(51,17);
  67.       END;
  68.   END;
  69.   Write(TTT[row,col]);
  70. END;
  71. {------------------------------------------------------------------}
  72. PROCEDURE CheckWin;
  73. BEGIN
  74.  IF (TTT[1,1] = TTT[2,1]) THEN IF (TTT[1,1] = TTT[3,1]) THEN Win:=True;
  75.  IF (TTT[1,1] = TTT[1,2]) THEN IF (TTT[1,1] = TTT[1,3]) THEN Win:=True;
  76.  IF (TTT[1,1] = TTT[2,2]) THEN IF (TTT[1,1] = TTT[3,3]) THEN Win:=True;
  77.  IF (TTT[2,1] = TTT[2,2]) THEN IF (TTT[2,1] = TTT[2,3]) THEN Win:=True;
  78.  IF (TTT[3,1] = TTT[2,2]) THEN IF (TTT[3,1] = TTT[1,3]) THEN Win:=True;
  79.  IF (TTT[1,2] = TTT[2,2]) THEN IF (TTT[1,2] = TTT[3,2]) THEN Win:=True;
  80.  IF (TTT[3,1] = TTT[3,2]) THEN IF (TTT[3,1] = TTT[3,3]) THEN Win:=True;
  81.  IF (TTT[1,3] = TTT[2,3]) THEN IF (TTT[1,3] = TTT[3,3]) THEN Win:=True;
  82. END;
  83. {-------------------------------------------------}
  84. PROCEDURE GetCords;
  85. VAR   Symbol1,Symbol2:Char; Player:Byte;
  86. BEGIN
  87.  Player:=1; Win:=False;
  88.  Gotoxy(17,23);
  89.  Write ('Enter the Character for Player 1 (O or X) : ');
  90.  Readln(Symbol1);
  91.  Gotoxy(17,24);
  92.  Write ('Enter the Character for Player 2 (O or X) : ');
  93.  Readln(Symbol2);
  94.  REPEAT
  95.    Window(15,22,70,25); Clrscr; Window (1,1,80,25);
  96.    Gotoxy(2,22);   Write ('Player : ',Player);
  97.  
  98.    Gotoxy(20,22);  Write ('Enter the Column (1/2/3) : ');
  99.    Readln(Col);
  100.    Gotoxy(20,23);  Write ('Enter the Row (1/2/3)    : ');
  101.    Readln(Row);
  102.  
  103.    IF Player=1 THEN TTT[Row,Col]:=Symbol1 ELSE TTT[Row,Col]:=Symbol2;
  104.    
  105.    IF Player=1 THEN Inc(Player) ELSE Player:=1;
  106.    ShowChars; CheckWin;
  107.    IF Win=True THEN
  108.     BEGIN
  109.       Gotoxy(20,25);  Write ('We have a winner...');
  110.     END;
  111.  UNTIL Player=3;
  112. END;
  113. {-------------------------------------------------}
  114. BEGIN
  115.   Textattr:=$07; 
  116.   Clrscr;
  117.   ClearArray;
  118.   Display;
  119.   GetCords;
  120. END.              {That's it....hope you get something out of it...}